package SecondeStage.Collection.List;

import java.util.ArrayList;

public class ArrayListDetail {
    public static void main(String[] args) {
        ArrayList arrayList = new ArrayList();
        //ArrayList 可以加入null，并且可以有多个
        arrayList.add(null);
        arrayList.add("jack");
        arrayList.add(null);

        // ArrayList 是线程不安全的，因为源码里可以看到它没有synchronized修饰
        // ArrayList 基本等同于Vector，在多线程的情况下，不建议使用ArrayList

        // ArrayList中维护了一个Object类型的数组elementData
        // 当创建ArrayList对象时，如果使用的是无参构造器，则初始elementData容量为0，
        // 第一次添加元素后，扩容elementData为10，如需要再次扩容，则扩容elementData为1.5倍
        ArrayList arrayList2 = new ArrayList();
        for (int i = 1; i <= 10; i++) {
            arrayList2.add(i);
        }
        for (int i = 11; i <=15 ; i++) {
            arrayList2.add(i);
        }
        arrayList2.add(100);

        //如果使用的是指定大小的构造器，则初始elementData容量为指定大小，如果需要扩容，则直接扩容elementData为1.5倍
        ArrayList arrayList3 = new ArrayList(8);
        for (int i = 1; i <= 8; i++) {
            arrayList3.add(i);
        }
        for (int i = 9; i <=12 ; i++) {
            arrayList3.add(i);
        }
        arrayList3.add(100);
    }
}
